package fr.ifsic.film.client.ui;

import com.google.gwt.user.client.rpc.AsyncCallback;

import fr.ifsic.film.client.FilmProject;
import fr.ifsic.film.client.dto.PersonneDTO;

public class ListePersonnes extends ListeType {

	private PersonneDTO[] pdto;

	public ListePersonnes() {
		super("Liste des personnes");
	}

	@Override
	void effacer() {
		FilmProject.greetingService.deleteP(
				pdto[listBox.getSelectedIndex()].getP(),
				new AsyncCallback<Void>() {
					@Override
					public void onFailure(Throwable caught) {
					}

					@Override
					public void onSuccess(Void result) {
					}
				});
		FilmProject.changePage(FilmProject.accueil);
	}

	@Override
	void details() {
		PersonneDTO p = pdto[listBox.getSelectedIndex()];
		if (p != null) {
			FilmProject.changePage(FilmProject.dp);
			((DetailsPersonne) FilmProject.dp).labelShowNom.setText(p
					.getNom());
			((DetailsPersonne) FilmProject.dp).labelShowPrenom.setText(p
					.getPrenom());
			((DetailsPersonne) FilmProject.dp).labelShowId.setText(p.getP()
					+ "");
			((DetailsPersonne) FilmProject.dp).labelShowSexe.setText(p
					.getSexe());
		}
	}

	@Override
	void refresh() {
		FilmProject.greetingService
				.listPersonne(new AsyncCallback<PersonneDTO[]>() {
					@Override
					public void onFailure(Throwable caught) {
						System.out.println("Erreur lors de la recuperation de la liste des personnes");
						System.out.println(caught.getLocalizedMessage());
					}

					@Override
					public void onSuccess(PersonneDTO[] result) {
						while (listBox.getItemCount() > 0)
							listBox.removeItem(0);

						pdto = result;
						for (PersonneDTO p : result) {
							listBox.addItem(p.getNom() + " " + p.getPrenom());
						}

					}
				});
	}
}
